樸素貝葉斯(Naive Bayes)是一種基於貝葉斯定理和特征條件獨立假設的分類算法。它的“樸素”體現在假設所有特征都是相互獨立的,這意味著每個特征對於分類的貢獻是相互獨立的。
基本原理:
貝葉斯定理:根據貝葉斯定理,我們可以通過先驗概率和似然度來計算後驗概率,即給定特征條件下目標變量的概率。
特征條件獨立假設:樸素貝葉斯算法假設各個特征條件是相互獨立的,也就是說給定目標變量,各個特征之間是獨立的。
樸素貝葉斯分類器選擇具有最大後驗概率的類別作為預測的類別。
主要類型:
高斯樸素貝葉斯:適用於連續型數據,假設特征的條件概率符合高斯分布。
多項式樸素貝葉斯:適用於離散型數據,常用於文本分類任務。
伯努利樸素貝葉斯:處理二值型特征的分類問題。
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 載入新聞數據集
newsgroups_train = fetch_20newsgroups(subset='train')
X, y = newsgroups_train.data, newsgroups_train.target
# 將文本轉換為特征向量
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(X)
# 初始化多項式樸素貝葉斯模型
mnb = MultinomialNB()
# 在訓練集上訓練模型
mnb.fit(X, y)
# 預測分類
newsgroups_test = fetch_20newsgroups(subset='test')
X_test = vectorizer.transform(newsgroups_test.data)
y_pred = mnb.predict(X_test)
# 計算準確度
accuracy = accuracy_score(newsgroups_test.target, y_pred)
print(f'準確度:{accuracy}')